/**
 * 
 */
package com.gr.staffpm.tasks.dao;

import java.io.Serializable;
import java.util.List;

import com.gr.staffpm.datatypes.Project;
import com.gr.staffpm.datatypes.Task;
import com.gr.staffpm.datatypes.TaskQueue;
import com.gr.staffpm.datatypes.User;


/**
 * @author Graham Rhodes 15 Jan 2011 19:20:48
 */
public interface TaskQueueDAO extends Serializable {

    /**
     * @param id
     * @return
     */
    TaskQueue getQueuedTask(int id);

    /**
     * @param id
     * @return
     */
    TaskQueue getQueuedTaskByTaskId(int id);

    /**
     * @param projectId
     * @return
     */
    List<TaskQueue> getQueuedTasksForProject(Project project);

    /**
     * @param managerId
     * @return
     */
    List<TaskQueue> getQueuedTasksForManager(User manager);

    /**
     * @param task
     * @param currentUser
     * @param manager
     * @param comment
     */
    void addTaskToQueue(Task task, User currentUser, User manager, String comment);

    /**
     * @param userId
     * @param property
     * @param ascending
     * @return
     */
    List<TaskQueue> getQueuedTasksForManager(User manager, String property, boolean ascending);

    /**
     * @param queuedTask
     */
    void removeTaskFromQueue(TaskQueue queuedTask);

    /**
     * @param queuedTask
     */
    void removeTaskFromQueue(Task queuedTask);

}
